//
// Created by xiongxuan on 2/10/18.
//

#ifndef ONLINEJUDGECORETEST_JUDGER_H
#define ONLINEJUDGECORETEST_JUDGER_H

#include <string>
#include <vector>

namespace PROBLEM_SET {
    std::string code_path;  // 待评测的代码路径
    std::string data_path;  // 存放数据的路径
    std::string config_path;// 存放配置文件的路径
    std::string run_dir;    // 运行程序的路径
    std::string core_result_dir; // judgerCore测试结果存放的路径
    std::string judger_result_dir; // judger.cpp测试结果存放的路径
    std::string judger_core_dir; // judgerCore的路径
    std::string cur_path;

    int judge_type;                 // 判题的类型，1得分型 or 2对错型
    int time_limit      = 1000;     // 单位MS, 默认为1秒
    int memory_limit    = 262144;   // 单位KB,

    int test_case_count = 0;        // 测试点个数，如果是对错型则为0

    struct TEST_CASE {
        std::string input;
        std::string output;
        int score;
    };
    TEST_CASE single_case;  // 单个的测试
    std::vector <TEST_CASE> test_case_vector;   // 多个测试case的vector
    std::vector <TEST_CASE>::iterator iter;   // 迭代器

    struct TEST_CASE_RESULT {
        int result;         // 结果代号
        int memory_usage;   // 内存使用量
        int time_usage;     // 时间使用量
        int case_score;     // 该测试点的分数
        std::string extra_message;  // 额外信息
        std::string status;         // 最终结果
    };
}

#endif //ONLINEJUDGECORETEST_JUDGER_H
